package com.csi.bumblebee.util;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;

import java.io.Serializable;
import java.util.concurrent.TimeUnit;

/**
 * @author HUOJT
 */
public class RedisUtil {

    @Autowired
    private static RedisTemplate<String, Serializable> redisTemplate;

    /**
     * 从redis取数据
     *
     * @param <T>      redis存储的对象类型
     * @param id       学生id
     * @param dayCount 过期时间（天数）
     * @return 学生对象
     */
    public static <T> T redisGet(String id, long dayCount) {
        redisTemplate.expire(id, getExpireTime(dayCount), TimeUnit.SECONDS);
        return (T) redisTemplate.opsForValue().get(id);
    }

    /**
     * 从redis删除
     *
     * @param <T>      redis存储的对象类型
     * @param id       学生id
     * @param dayCount 过期时间（天数）
     * @return 删除的学生
     */
    public static <T> T redisDelete(String id, long dayCount) {
        T t = redisGet(id, dayCount);
        redisTemplate.delete(id);
        return t;
    }

    /**
     * 设置过期时间
     *
     * @param dayCount 天数
     * @return 秒数
     */
    private static long getExpireTime(long dayCount) {
        return 60 * 60 * 24 * dayCount;
    }

}
